/* 
 * File:   Utilidad.cpp
 * Author: 75.02 - Grupo 7, 2do cuatrimestre 2012.
 * 
 * Created on 31 de octubre de 2012, 18:47
 */

#include "ActoresConstantes.h"
#include "Utilidad.h"
#include "UtilidadesConstantes.h"
#include "Caja.h"
#include "Perimetro.h"

using namespace TP::Juego::Arena::Utilidades;

Utilidad::Utilidad(const string& pNombre, Rol* pRol) {
    this->_nombre = pNombre;
    this->_rol = pRol;
}

Utilidad::~Utilidad() {
    if (this->_rol)
        delete this->_rol;
}

Posicion* Utilidad::setPosicion (Posicion* pPosicion){
    if (pPosicion)
        this->_posicion = pPosicion;
    return pPosicion;
}

Posicion* Utilidad::getPosicion (){
    return this->_posicion;
}

Rol* Utilidad::getRol(){
    return this->_rol;
}

string& Utilidad::getNombre (){
    return this->_nombre;
}

string Utilidad::setNombre(const string& pNombre){
    this->_nombre = pNombre;
    return this->_nombre;
}

Utilidad* Utilidad::deElementoXMLGenerico (TiXmlElement* pElemento){
    
    Utilidad* utilidad = NULL;
    if (pElemento)
    {
        if (CAJA == pElemento->ValueTStr())
            utilidad = new Caja();
        
        if (PERIMETRO == pElemento->ValueTStr())
            utilidad = new Perimetro();
        
        if (utilidad)
            utilidad->deElementoXML(pElemento);
    }
    return utilidad;
}

double Utilidad::decrementarEnergia (double pCantidadEnergia) {
    _vida -= pCantidadEnergia;
    if(_vida < 0) _vida = 0;
}